using System;
using System.Data;
using System.Data.SqlClient;
using System.Collections.Generic;
using System.Text;
using Microsoft.ApplicationBlocks;
using BusinessRules;
using DataAccess;
using Microsoft.ApplicationBlocks.Data;

namespace BusinessRules
{
    public class BasZonasGeograficas
    {
        private const String ZON_PADRE_ID_PARAM = "@ZON_PADRE_ID";
        private const String ZON_ID_PARAM = "@ZON_ID";
        private const String USU_ID_PARAM = "@USU_ID";
        private const String IVI_ID_PARAM = "@IVI_ID";
        private const String IRA_ID_PARAM = "@IRA_ID";
        private const String IPI_ESTADO_PARAM = "@IPI_ESTADO";

        
        
        
        private string _CadenaConexion;

        public string CadenaConexion
        {
            get { return _CadenaConexion; }
            set { _CadenaConexion = value; }
        }

        public BasZonasGeograficas(string strCadenaConecxion)
        {
            CadenaConexion = strCadenaConecxion;
        }

        /// <summary>
        /// Consulta el listado de las zonas geograficas
        /// </summary>
        /// <returns>Dataset con el listado</returns>
        public BasZonasGeograficasData BuscarZonasGeograficas()
        {
            BasZonasGeograficasData response = new BasZonasGeograficasData();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_BAS_ZONAS_GEOGRAFICAS", response);
            if (response.Rows.Count == 0)
                return null;
            return response;
        }

        public BasZonasGeograficasData ConsultarZonasGeograficasPadre(string Id)
        {
            BasZonasGeograficasData response = new BasZonasGeograficasData();
            SqlParameter param1 = new SqlParameter(ZON_PADRE_ID_PARAM, Id);
            if (Id == "0" || Id == "")
                param1.Value = System.DBNull.Value;
            SqlParameter[] parameters = { param1 };
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_BAS_ZONAS_GEOGRAFICAS_PADRE", response, parameters);
            if (response.Rows.Count == 0)
                return null;
            return response;
        }

        public BasZonasGeograficasData ConsultarZonasGeograficasPadreZonId(string strZonId)
        {
            SqlParameter param1 = new SqlParameter(ZON_PADRE_ID_PARAM, strZonId);
            if (strZonId == "0" || strZonId == "")
                param1.Value = System.DBNull.Value;
            SqlParameter[] parameters = { param1 };
            BasZonasGeograficasData objBasZonasGeograficasData = new BasZonasGeograficasData();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_BAS_ZONAS_GEOGRAFICAS_PADRE", objBasZonasGeograficasData, parameters);
            return objBasZonasGeograficasData;
        }

        /// <summary>
        /// Consulta el listado de todos los municipios en zonas geograficas
        /// </summary>
        /// <returns>Dataset con el listado</returns>
        public BasZonasGeograficasData BuscarZonasGeograficasMunicipios()
        {
            BasZonasGeograficasData response = new BasZonasGeograficasData();
            SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_BAS_ZONAS_GEOGRAFICAS_MUNICIPIOS", response);
            if (response.Rows.Count == 0)
                return null;
            return response;
        }

        public BasZonasGeograficasData ConsultarZonasGeograficasDepartamentoZonId(string strZonId)
        {
            SqlParameter param1 = new SqlParameter(ZON_ID_PARAM, strZonId);
            if (strZonId == "0" || strZonId == "")
                param1.Value = System.DBNull.Value;
            SqlParameter[] parameters = { param1 };
            BasZonasGeograficasData objBasZonasGeograficasData = new BasZonasGeograficasData();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_BAS_ZONAS_GEOGRAFICAS_DEPARTAMENTO", objBasZonasGeograficasData, parameters);
            return objBasZonasGeograficasData;
        }

        public BasZonasGeograficasData ConsultaDetalladaMunicipiosZonId(string strZonId)
        {
            SqlParameter param1 = new SqlParameter(ZON_ID_PARAM, strZonId);
            if (strZonId == "0" || strZonId == "")
                param1.Value = System.DBNull.Value;
            SqlParameter[] parameters = { param1 };
            BasZonasGeograficasData objBasZonasGeograficasData = new BasZonasGeograficasData();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_BAS_ZONAS_GEOGRAFICAS_DETALLE_MUNICIPIO", objBasZonasGeograficasData, parameters);
            return objBasZonasGeograficasData;
        }

        public BasZonasGeograficasData ConsultarZonasGeograficasDepartamento()
        {
            //SqlParameter param1 = new SqlParameter(ZON_PADRE_ID_PARAM, strZonId);
            //if (strZonId == "0" || strZonId == "")
            //    param1.Value = System.DBNull.Value;
            //SqlParameter[] parameters = { param1 };
            BasZonasGeograficasData objBasZonasGeograficasData = new BasZonasGeograficasData();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_BAS_ZONAS_GEOGRAFICAS_DEPARTAMENTOS", objBasZonasGeograficasData);
            return objBasZonasGeograficasData;
        }

        public DataTable buscarRecursosAsignadosPorUsuario(string strUsuId)
        {
            SqlParameter param1 = new SqlParameter(USU_ID_PARAM, strUsuId);
            SqlParameter[] parameters = { param1 };
            DataTable objDataTable = new DataTable();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_IVA_RECURSOS_ASIGNADOS", objDataTable, parameters);
            return objDataTable;
        }

        public DataTable buscarRecursosAsignadosPorUsuarioPorRecursosAsignados(string strUsuId, string strIraId)
        {
            SqlParameter param1 = new SqlParameter(USU_ID_PARAM, strUsuId);
            SqlParameter param2 = new SqlParameter(IRA_ID_PARAM, strIraId);
            if (strIraId == "")
                param2.Value = System.DBNull.Value;

            SqlParameter[] parameters = { param1, param2 };
            DataTable objDataTable = new DataTable();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_IVA_RECURSOS_ASIGNADOS_USU_ID_IRA_ID", objDataTable, parameters);
            return objDataTable;
        }


        public DataTable buscarRecursosAsignadosPorIraId(string strIviId, string strZonPadreID)
        {

            SqlParameter param1 = new SqlParameter(IVI_ID_PARAM, strIviId);
            SqlParameter param2 = new SqlParameter(ZON_ID_PARAM, strZonPadreID);
            SqlParameter[] parameters = { param1, param2 };
            DataTable objDataTable = new DataTable();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_IVA_RECURSOS_ASIGNADOS_IRA_ID", objDataTable, parameters);
            return objDataTable;
        }

        public DataTable buscarRecursosAsignadosZonIdVigId(string strIviId, string strZonPadreID)
        {
            SqlParameter param1 = new SqlParameter(IVI_ID_PARAM, strIviId);
            SqlParameter param2 = new SqlParameter(ZON_PADRE_ID_PARAM, strZonPadreID);
            //SqlParameter param3 = new SqlParameter(IPI_ESTADO_PARAM, strIpiEstado);


            SqlParameter[] parameters = { param1, param2 };
            DataTable objDataTable = new DataTable();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_IVA_PLAN_INVERSION_RECURSOS", objDataTable, parameters);
            return objDataTable;
        }

        public DataTable buscarRecursosAsignadosPorUsuarioPorVigencia(string strUsuId, string strIviId)
        {
            SqlParameter param1 = new SqlParameter(USU_ID_PARAM, strUsuId);
            SqlParameter param2 = new SqlParameter(IVI_ID_PARAM, strIviId);

            SqlParameter[] parameters = { param1, param2 };
            DataTable objDataTable = new DataTable();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_IVA_RECURSOS_ASIGNADOS_USU_ID_IVI_ID", objDataTable, parameters);
            return objDataTable;
        }

        public DataTable buscarRecursosAsignadosPorUsuarioPorVigenciaPorZona( string strIviId, string strZona)
        {
            SqlParameter param2 = new SqlParameter(IVI_ID_PARAM, strIviId);
            SqlParameter param3 = new SqlParameter(ZON_ID_PARAM, strZona);
            SqlParameter[] parameters = {param2, param3 };
            DataTable objDataTable = new DataTable();
            Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_IVA_RECURSOS_ASIGNADOS_USU_ID_IVI_ID_ZON_ID", objDataTable, parameters);
            return objDataTable;
        }

        public DataTable BuscarZonasPaises()
        {
            DataTable response = new DataTable();
            SqlHelper.ExecuteDataTable(this.CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_BAS_ZONAS_PAISES", response);
            if (response.Rows.Count == 0)
                return null;
            return response;
        }
        
        //public DataAccess.SigPlanAccionData ConsultarAno()
        //{
        //    DataAccess.SigPlanAccionData objSigPlanAccionData = new SigPlanAccionData();

        //    Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_BUSCAR_SIG_PLAN_ACCION_ANO", objSigPlanAccionData);

        //    return objSigPlanAccionData;
        //}
        //public DataAccess.SigPlanAccionData ConsultarPlanAccionAno(Decimal decPnlAno)
        //{
        //    SqlParameter param1 = new SqlParameter(PLN_ANO_PARAM, decPnlAno);
        //    SqlParameter[] parameters = {param1};
        //    DataAccess.SigPlanAccionData objSigPlanAccionData = new SigPlanAccionData();
        //    Microsoft.ApplicationBlocks.Data.SqlHelper.ExecuteDataTable(CadenaConexion, CommandType.StoredProcedure, "PAS_CONSULTAR_SIG_PLAN_ACCION_ANO", objSigPlanAccionData, parameters);

        //    return objSigPlanAccionData;
        //}

        //public void Buscar()
        //{

        //    throw new System.NotImplementedException();
        //}
    }
}
